package com.ruoyi.lvlian.service;

import com.ruoyi.common.core.exception.AppException;

/**
 * 短信发送
 *
 */
public interface ISmsSendService {
    /**
     * 发送短信
     *
     * @param mobile     手机号
     * @param templateId 短信模版id
     * @param smsType    短信类型
     * @author
     * @date 2020-01-03 13:40:42
     */
    void sendSmsVerificationCode(String mobile, String templateId, String smsType) throws AppException;

    /**
     * 发送短信
     *
     * @param mobile     手机号
     * @param templateId 短信模版id
     * @param smsType    短信类型
     * @param userId     用户id
     * @author
     * @date 2020-01-03 13:41:04
     */
    void sendSmsVerificationCode(String mobile, String templateId, String smsType, Integer userId) throws AppException;

    /**
     * 发送短信
     *
     * @author
     * @date 2020-01-03 13:40:42
     */
    void sendSmsVerificationCode(String mobile, String ip) throws AppException;


    /**
     * 发送交易风险预警短信
     *
     * @param mobile     手机号
     * @param userId     用户id
     * @param ip         ip地址
     * @param cardCode   卡号尾数
     * @param tradeMoney 交易金额
     * @throws AppException
     */
    void sendSmsTradeRiskWaring(String mobile, Integer userId, String ip, String cardCode, String tradeMoney) throws AppException;

    /**
     * 发送银行卡交易语音验证码
     *
     * @param mobile 手机号
     * @param userId 用户id
     * @param ip     ip
     * @throws AppException
     */
    void sendSmsTradeRiskWaringVoice(String mobile, Integer userId, String ip) throws AppException;


    /**
     * 检查验证码
     *
     * @param mobile
     * @param code
     * @param smsSendType
     * @author
     * @date 2020-02-13 23:25:50
     */
    void checkVerificationCode(String mobile, String code ) throws AppException;

    /**
     * 发送提醒通知类短信
     * @author
     * @date 2021-07-28 11:57:57
     * @param mobile
     * @param num
     * @param userId
     * @param smsType
     */
    void sendNotifySms(String mobile, int num, int userId) throws AppException;

    String generateSequence(String prefix);
}
